<?php
class lista_ejemplos extends controlador
{
	private $tpl = null;
	public function __construct( & $tpl)
	{
		$this->tpl = & $tpl;
		$tpl->set("title","Listado de archivos de Ejemplo");
	}
	public function mostrar_listado()
	{
		$tpl = & $this->tpl;
		$tpl->parse('lista_ejemplos/mostrar_listado');
		$tpl->assign('url_ejecutar',BASE_URL .'/ejemplos/iframe.php/lista_ejemplos:ejecutar_codigo/');
		$tpl->assign('url_ejecutar_ver',BASE_URL .'/ejemplos/iframe.php/lista_ejemplos:mostrar_codigo_html/');
		$lista = array();
		foreach(new DirectoryIterator(BASE_PATH . '/ejemplos/ejemplo') as $child)
		{
			if($child->isFile())
			{
				$url = BASE_URL .'/ejemplos/iframe.php/lista_ejemplos:mostrar_codigo?url='.
					urlencode(strtr($child->getPathname(),array(BASE_PATH=>BASE_URL,'\\'=>'/')));
				$lista[] = array('nombre' => $child->getFilename(),
								'url' =>  $url
				);
			}
		}
		$tpl->assign('lista',$lista);
		return $tpl->render('lista_ejemplos/mostrar_listado');
	}
	public function mostrar_codigo()
	{
		$path = isset($_GET['url']) ? $_GET['url'] :'';
		$path = str_replace(BASE_URL,BASE_PATH,$path);
		if(file_exists($path))
		{
			return highlight_file($path,true);
		}
		else
		{
			return "Ejemplo inexistente" .$path;
		}
	}
	public function mostrar_codigo_html($nombre)
	{
		if(!TXTAUTH::$user->registered){return 'Solo los usuarios registrados pueden ver el codigo generado los codigos de ejemplo';}
		$path = strtr($nombre,array('/'=>'','\\'=>''));
		if(file_exists(BASE_PATH . '/ejemplos/ejemplo/' . $path))
		{
			ob_start();
			require BASE_PATH . '/ejemplos/ejemplo/' . $path;
			$todo = htmlentities(ob_get_clean());
			return "<pre></code>$todo</code></pre>";
		}
		else{
			return 'no existe el error';
		}
	}
	public function ejecutar_codigo($nombre = '')
	{
		if(!TXTAUTH::$user->registered){return 'Solo los usuarios registrados puede ejecutar los codigos de ejemplo';}
		$path = strtr($nombre,array('/'=>'','\\'=>''));
		if(file_exists(BASE_PATH . '/ejemplos/ejemplo/' . $path))
		{
			require BASE_PATH . '/ejemplos/ejemplo/' . $path;
		}
		else{
			return 'no existe el error';
		}
	}
	public function getDefault()
	{
		return $this->mostrar_listado();
	}
	
	private function _privado()
	{
		return "esto es privado y no debe mostrarse";
	}
}